home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 7 / Amoszine 7 (Disk 3 of 3).adf / ARCHIVES / AJC_More_Source.lha / AJC-Artistix-Ancient.AMOS / AJC-Artistix-Ancient.amosSourceCode next >
AMOS Source Code  |  1995-06-01  |  27KB  |  1,153 lines

  1. '
  2. ' ARTISTIX v1.0
  3. ' By Andrew Campbell a long time ago!
  4. '  
  5. ' This program is ANCIENT but it's the first ever art program
  6. ' I tried to code. There's some interesting routines that could
  7. ' make potentially good rip-outs in here, so I've left it as it
  8. ' is - in it's original incarnation. 
  9. '
  10. ' Please note only the first THREE menus actually WORK (** not **  
  11. ' including ZOOM!) - any others may cock the program up and require
  12. ' a control/C. 
  13. '
  14. ' Ps. DO NOT laugh at the titlescreen! 
  15. '     I was at SCHOOL when I did this!! >8^) 
  16. '  
  17.  
  18. Dim M$(5),PAL(31)
  19. Global M$(),SL,M,X,Y,XY,YX,MZ,OPT,MEN,ZSET,C,DR,DM,GO,GW,MST,OPT,R,G,B,R$,A1$,A2$,A3$
  20. Global A$,B$,OK,NO,BW,BR1,BR2,NOCOLS,FU,CURBRUSH,SP,STA,FIN,CLR,CURC,P,PAL
  21. Global PAL(),TEMP,LIMIT,TD
  22.  
  23. '========= 
  24. ' * INIT *   
  25. '========= 
  26.  
  27. Auto View Off 
  28. Screen Open 0,320,256,16,Lowres
  29. Curs Off : Flash Off : Cls 0
  30. Unpack 11 To 0
  31. Auto View On : View 
  32. Repeat : Until Mouse Key
  33.  
  34. SL=%1111111111111111
  35. BW=0 : BR1=5 : BR2=5 : SP=0
  36. NOCOLS=16 : CURBRUSH=1
  37. STA=1 : FIN=NOCOLS-1
  38. CURC=1 : PAL=1 : TD=0
  39.  
  40. Restore 555 : 
  41. For I=0 To 31 : Read A : PAL(I)=A : Next I
  42. 555 Data 0,$FFF,$EEE,$DDD,$CCC,$BBB,$AAA,$999,$888,$777,$666,$555,$444,$333,$222,$111,$FF,$FE,$FD,$FC,$FB,$FA,$F9,$F8,$F7,$F6,$F5,$F4,$F3,$F2,$F1,$F0
  43. Cls 0
  44. Auto View Off 
  45.  
  46. Screen Open 7,320,256,16,Lowres
  47. Curs Off : Flash Off : Cls 0
  48. Screen Hide 7
  49.  
  50. Screen Open 2,320,256,16,Lowres
  51. Curs Off : Flash Off : Cls 0
  52. Unpack 10 To 2
  53.  
  54. Screen Open 1,320,40,16,Lowres
  55. Curs Off : Flash Off 
  56. Screen Copy 2,0,0,320,40 To 1,0,0 : Screen 1 : Screen Hide 2
  57. Screen 1 : Get Palette 2
  58. Screen 0 : 
  59. For I=0 To 31 : Colour I,PAL(I) : Next I
  60. Screen 7
  61. For I=0 To 31 : Colour I,PAL(I) : Next I
  62. Screen 1 : Get Palette 2
  63.  
  64. MEN=1
  65. Screen 1
  66. ZSET
  67. C=5
  68. Auto View On : View 
  69.  
  70. '===== 
  71. PICK:
  72. '===== 
  73.  
  74. Change Mouse 1
  75. Clear Key 
  76. Do 
  77.    X=X Mouse : Y=Y Mouse
  78.    XY=Mouse Screen : MZ=Mouse Zone
  79.    If Mouse Key and MZ>0 Then Ink C : GZONE : ZSET : Screen 1
  80.    If Mouse Key and MZ=0 Then Repeat : Y=Y Mouse : Gosub LIMITS : Screen Display 1,132,Y,, : Until Mouse Key=0
  81.    If XY=0 and MEN>1 Then Screen To Back 1 : Screen 0 : Goto ART
  82. Loop 
  83.  
  84. '======
  85. ART:
  86. '======
  87.  
  88. Change Mouse 4
  89. If OPT=13 and MEN=2 Then Change Mouse 6
  90. If OPT=14 and MEN=2 Then Change Mouse 7
  91. If OPT>15 and OPT<19 Then POSITION
  92. Do 
  93.    K$=""
  94.    K$=Inkey$
  95.    If K$="u" Then Screen Copy 7,0,0,320,256 To 0,0,0 : Clear Key 
  96.  
  97.    X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  98.    If Mouse Key=1 Then GART
  99.  
  100.    If Mouse Key=2 : Bob Off : Wait Vbl 
  101.       Gosub LIMITS
  102.       Screen Copy 0,0,0,320,256 To 7,0,0 : Screen 7 : Get Palette 0 : Screen 0
  103.       Screen Display 1,132,Y-20,, : CMENU : Screen To Back 1 : Screen 0
  104.       If MST=1 : MST=0 : NEWMEN : ZSET : Goto PICK : End If 
  105.       Goto ART
  106.    End If 
  107. Loop 
  108. LIMITS:
  109. If Y<41 Then Y=41
  110. If Y>250 Then Y=250
  111. Return 
  112.  
  113. '------------------ DRAW MENU OPTIONS
  114. Procedure PLT
  115. Set Line SL
  116. X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  117. Gr Locate X2,Y2
  118. Ink C
  119. While Mouse Key
  120.  X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  121.  If DM=1 Then Draw To X2,Y2
  122.  If DM=2 Then Plot X2,Y2,C
  123. Wend 
  124. End Proc
  125. Procedure BRUSH
  126.  
  127. POSITION
  128. If CLR=1
  129.  Inc CURC
  130.  If CURC=FIN : CURC=STA : End If 
  131.  C=CURC
  132. End If 
  133.  
  134. Ink C
  135.  
  136. If DR=1 Then Circle X,Y,BR2
  137. If DR=2 Then Box X-BR1,Y-BR1 To X+BR1,Y+BR1
  138. If DR=3 Then Bar X-BR1,Y-BR1 To X+BR1,Y+BR1
  139.  
  140. End Proc
  141. Procedure ER
  142.    POSITION
  143.    While Mouse Key
  144.       X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  145.       Ink C : Bar X2,Y2 To X2+10,Y2+14
  146.    Wend 
  147. End Proc
  148. Procedure LINE
  149.    Set Line %1111111111111111
  150.    Gr Writing 2
  151.    POSITION
  152.    While Mouse Key
  153.       X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  154.       Draw X,Y To X2,Y2 : Draw X,Y To X2,Y2
  155.    Wend 
  156.    Gr Writing 0 : 
  157.    Ink C : Set Line SL
  158.    Draw X,Y To X2,Y2
  159. End Proc
  160. Procedure TRIANGLE
  161.  
  162.    Set Line %1111111111111111
  163.    Gr Writing 2
  164.    POSITION
  165.    Repeat : Until Mouse Key=0
  166.    While Mouse Key=0
  167.       X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  168.       Draw X,Y To X2,Y2 : Draw X,Y To X2,Y2
  169.    Wend 
  170.    Wait 2
  171.    Repeat : Until Mouse Key=0
  172.    While Mouse Key=0
  173.       X5=X Screen(X Mouse) : Y5=Y Screen(Y Mouse)
  174.       Draw X,Y To X2,Y2 : Draw X,Y To X2,Y2
  175.       Draw X,Y To X5,Y5 : Draw X,Y To X5,Y5
  176.       Draw X2,Y2 To X5,Y5 : Draw X2,Y2 To X5,Y5
  177.       If Mouse Key=2 Then Gr Writing 0 : Pop Proc
  178.    Wend 
  179.  
  180.    Gr Writing 0 : Ink C
  181.    Set Line SL
  182.    Polygon X,Y To X2,Y2 To X5,Y5
  183.    Wait 6
  184.  
  185. End Proc
  186. Procedure POLY
  187.    Shared X,Y
  188.    POSITION
  189. AG:
  190.    Gr Writing 2
  191.    Repeat : Until Mouse Key=0
  192.    While Mouse Key=0
  193.       X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  194.       Draw X,Y To X2,Y2 : Draw X,Y To X2,Y2
  195.    Wend 
  196.  
  197.    If Mouse Key=2 Then Gr Writing 0 : Pop Proc
  198.  
  199.    If Mouse Key=1 : 
  200.    Gr Writing GW : Ink C : Draw X,Y To X2,Y2
  201.    X=X Screen(X Mouse)
  202.    Y=Y Screen(Y Mouse)
  203.    Goto AG
  204.    End If 
  205. End Proc
  206. Procedure RAYS
  207.    Set Line SL
  208.    POSITION
  209.  
  210.    Ink C
  211.    If Mouse Key=2 Then Pop Proc
  212.    While Mouse Key
  213.       X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  214.  
  215. If CLR=1
  216.  Inc CURC
  217.  If CURC=FIN : CURC=STA : End If 
  218.  Ink CURC
  219. End If 
  220.  
  221.       Draw X,Y To X2,Y2
  222.    Wend 
  223.    End Proc
  224. Procedure SIRCLE
  225.    Shared X,Y
  226.    Gr Writing 2
  227.    POSITION
  228.    While Mouse Key
  229.       X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  230.       R1=Abs(X-X2)/2 : R2=Abs(Y-Y2) : R4=Abs(Y-Y2)/2
  231.       R5=Abs(X-X2) : R=Max(R1,R2) : R3=Max(R4,R5)
  232.       If R<1 Then R=1
  233.       If R3<1 Then R3=1
  234.       If DM=1 : Circle X,Y,R : Circle X,Y,R : End If 
  235.       If DM=2 : Ellipse X,Y,R,R3 : Ellipse X,Y,R,R3 : End If 
  236.    Wend 
  237.    Gr Writing GW : Ink C
  238.    If DM=1 Then Circle X,Y,R
  239.    If DM=2 Then Ellipse X,Y,R,R3
  240. End Proc
  241. Procedure RECTANGLE
  242.    Set Line %1111111111111111
  243.    Gr Writing 2
  244.    POSITION
  245.    While Mouse Key
  246.    X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  247.    Box X,Y To X2,Y2 : Box X,Y To X2,Y2
  248.    Wend 
  249.    Gr Writing GW : Ink C
  250.    Set Line SL
  251.    If DM=1 Then Box X,Y To X2,Y2
  252.    If DM=2
  253.     If X2=X or Y2=Y : Pop Proc : End If 
  254.     If X2<X : Swap X2,X : End If 
  255.     If Y2<Y : Swap Y2,Y : End If 
  256.     Bar X,Y To X2,Y2
  257.    End If 
  258. End Proc
  259. Procedure GRAB
  260. SAD:
  261.    Set Line %1111111111111111
  262.    DR=1
  263.    POSITION
  264.    Gr Writing 2
  265.    FU=Point(X,Y)
  266.    While Mouse Key
  267.     X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  268.     Box X,Y To X2,Y2 : Box X,Y To X2,Y2
  269.    Wend 
  270.  
  271.     Gr Writing GW
  272.  
  273.     If X2=X or Y2=Y : Pop Proc : End If 
  274.     If X2<X : Swap X2,X : End If 
  275.     If Y2<Y : Swap Y2,Y : End If 
  276.     If X2>318 or Y2>254 or X2<0 or Y2<0 or X<0 or Y<0 or X>318 or Y>254 Then Boom : Goto SAD
  277.  
  278.     If FU=-1 Then FU=0
  279.     Plot X,Y,FU
  280.     Wait Vbl 
  281.  
  282.     Get Bob 50,X,Y To X2+1,Y2+1
  283.     Make Mask 50
  284.  
  285.  DR=1 : PBOB
  286.  
  287. End Proc
  288. Procedure PBOB
  289.  
  290. If DR=1 Then Hide On 
  291.  
  292.  SAC:
  293.    Repeat 
  294.       K$=""
  295.       K$=Inkey$
  296.       If K$="u" Then Bob Off 1 : Wait Vbl : Screen Copy 7,0,0,320,256 To 0,0,0 : Clear Key 
  297.       X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  298.       If DR=1 Then Bob 1,X,Y,50 : Wait Vbl 
  299.       If DR=5 Then Bob 1,X,Y,CURBRUSH+8 : Wait Vbl 
  300.    Until Mouse Key
  301.  
  302.    If Mouse Key=1 : 
  303.     Bob Off 1 : Wait Vbl : 
  304.      If DR=1 : Paste Bob X,Y,50 : Goto SAC : End If 
  305.      If DR=2 : Paste Bob X,Y,Hrev(50) : Goto SAC : End If 
  306.      If DR=3 : Paste Bob X,Y,Vrev(50) : Goto SAC : End If 
  307.      If DR=4 : Paste Bob X,Y,Rev(50) : Goto SAC : End If 
  308.      If DR=5 : Paste Bob X,Y,CURBRUSH+8 : Goto SAC : End If 
  309.     Bob Off : Wait Vbl 
  310.    End If 
  311. Show On 
  312.  
  313. End Proc
  314. Procedure PHILL
  315.    Change Mouse 6
  316.    Repeat 
  317.       X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  318.    Until X>0 and X<320 and Y>0 and Y<256 and Mouse Key
  319.    Ink C : Change Mouse 5 : Paint X,Y : Change Mouse 6
  320. End Proc
  321. Procedure POSITION
  322.    Repeat 
  323.       K$=""
  324.       K$=Inkey$
  325.       If K$="u" Then Screen Copy 7,0,0,320,256 To 0,0,0 : Clear Key 
  326.       X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  327.       If OPT>15 and OPT<19 and MEN=2 : Bob 1,X,Y,50 : Wait Vbl : End If 
  328.       If OPT=3 and MEN=3 : Bob 1,X,Y,CURBRUSH+8 : Wait Vbl : End If 
  329.    Until Mouse Key
  330. End Proc
  331. '------------------ ZONE / SCREEN COPYS  
  332. Procedure ZSET
  333.  Reserve Zone 45
  334.  Reset Zone 
  335.    If MEN=1
  336.       For I=0 To 9
  337.          Set Zone I+1,32*I,8 To(32*I)+32,39
  338.       Next I
  339.    End If 
  340.  
  341.    If MEN=2 : Rem ** SET FIRST TWELVE 16*16 Boxes! 
  342.       For I=0 To 6
  343.          Set Zone I+1,16*I,8 To(16*I)+16,24
  344.       Next I
  345.       For I=0 To 6
  346.          Set Zone I+7,16*I,16 To(16*I)+16,39
  347.       Next I
  348.       Set Zone 13,16*6,8 To(16*6)+32,39
  349.       Set Zone 14,(16*6)+32,8 To(16*8)+32,39
  350.       For I=0 To 3
  351.          Set Zone I+15,16*I+160,8 To(16*I+160)+16,24
  352.       Next I
  353.       For I=0 To 3
  354.          Set Zone I+19,16*I+160,24 To(16*I+160)+16,39
  355.       Next I
  356.       Set Zone 23,224,8 To 224+32,39
  357.       Set Zone 24,256,8 To 256+32,39
  358.       Set Zone 25,288,8 To 288+31,39
  359.  End If 
  360.  
  361.   If MEN=3
  362.       Set Zone 1,0,8 To 64,39
  363.       Set Zone 2,64,8 To 128,39
  364.       For I=3 To 8
  365.          Set Zone I,(32*I)+32,8 To(32*I)+64,39
  366.       Next I
  367.    End If 
  368.  
  369.   If MEN=5
  370.       Set Zone 1,0,8 To 64,39
  371.       Set Zone 2,64,8 To 64+16,24
  372.       Set Zone 3,80,8 To 96,24
  373.       Set Zone 21,64,24 To 96,39
  374.       For I=4 To 6
  375.          Set Zone I,32*I-32,8 To 32*I,39
  376.       Next I
  377.       For I=0 To 6
  378.          Set Zone I+7,192+(16*I)-16,8 To 192+(16*I),24
  379.       Next I
  380.       For I=0 To 6
  381.          Set Zone I+14,192+(16*I)-16,16 To 192+(16*I),39
  382.       Next I
  383.       Set Zone 25,288,8 To 288+31,39
  384.    End If 
  385.  
  386. End Proc
  387. Procedure GZONE
  388.    MZ=Mouse Zone
  389.  
  390.    If MZ<1 Then Pop Proc
  391.    
  392. '================ MAIN MENU
  393.  
  394.    If MEN=1
  395.       If MZ=1 : MEN=2 : MZ=0 : ZSET : NEWMEN : End If 
  396.       If MZ=2 : MEN=3 : MZ=0 : ZSET : NEWMEN : End If 
  397.       If MZ=4 : MEN=5 : MZ=0 : ZSET : NEWMEN : End If 
  398.       If MZ=5 : MEN=6 : MZ=0 : ZSET : NEWMEN : End If 
  399.  
  400.       If MZ=10 and Mouse Key=2
  401.        A$=" " : B$="QUIT : ARE YOU SURE?"
  402.        OKCANCEL
  403.        If OK=1 : Fade 2 : Wait 30 : End : End If 
  404.       End If 
  405.    End If 
  406.  
  407. '=============== DRAW MENU 
  408.    
  409.    If MEN=2
  410.  
  411.       If MZ=9 and Mouse Key=2 : DR=1
  412.        BRUSHES
  413.       End If 
  414.  
  415.       If MZ=10 and Mouse Key=2 : DR=2
  416.        BRUSHES
  417.       End If 
  418.  
  419.       If MZ=12 : Screen 0 : Set Paint 0 : Bell : Pop Proc : End If 
  420.       If MZ=11 : Screen 0 : Set Paint 1 : Bell : Pop Proc : End If 
  421.  
  422.       If MZ=21 : Make Mask 50 : Bell : Pop Proc : End If 
  423.       If MZ=20 : No Mask 50 : Bell : Pop Proc : End If 
  424.  
  425.       If MZ=24
  426.        CULPIC
  427.        If OK=1
  428.         Screen 0 : Cls C : Screen 1 : 
  429.         Pop Proc
  430.        End If 
  431.  
  432.       End If 
  433.  
  434.       If MZ=25 : MEN=1 : NEWMEN : ZSET : Pop Proc : End If 
  435.  
  436.       OPT=MZ
  437.    End If 
  438.  
  439. '================= TOOLS MENU
  440.  
  441.    If MEN=3
  442.     If MZ=1 : LINESTYLE : End If 
  443.     If MZ=2 : BRUSHED : End If 
  444.     If MZ=6 : XY : End If 
  445.     If MZ=4 : DR=1 : SLIDE : End If 
  446.     If MZ=5 : DR=2 : SLIDE : End If 
  447.     If MZ=8 : MEN=1 : NEWMEN : ZSET : Pop Proc : End If 
  448.     OPT=MZ
  449.    End If 
  450.  
  451. '================= SHADE MENU
  452.  
  453.    If MEN=5
  454.     If MZ=1 : SHADER : Pop Proc : End If 
  455.     If MZ=25 : MEN=1 : NEWMEN : ZSET : Pop Proc : End If 
  456.     If MZ=21 : Screen 0 : Shift Off : Get Palette 7 : Screen 1 : Pop Proc : End If 
  457.  
  458.   If MZ=2 : DR=1 : SHFT : Pop Proc : End If 
  459.   If MZ=3 : DR=2 : SHFT : Pop Proc : End If 
  460.   If MZ=5 : CULPIC : DR=1 : 
  461.    If OK=1 : RFILL : End If 
  462.    Pop Proc
  463.   End If 
  464.  
  465.   If MZ=6 : CULPIC : DR=2
  466.     If OK=1 : RFILL : End If 
  467.   End If 
  468.  
  469.   If MZ=13 : A$=" TONE DOWN VALUE" : B$="COLS DOWN:" : TEMP=TD : LIMIT=14 : NUMBERS : TD=TEMP : End If 
  470.  
  471.   If MZ=15 and Mouse Key=2 : DR=2 : BRUSHES : End If 
  472.   If MZ=16 and Mouse Key=2 : DR=1 : BRUSHES : End If 
  473.   If MZ=17 and Mouse Key=2 : DR=3 : BRUSHES : End If 
  474.  
  475.  
  476.    If MZ=20
  477.     A$=" " : B$="MIRROR (RIGHT) : ARE YOU SURE?"
  478.     OKCANCEL
  479.     If OK=1
  480.     Screen Hide 1 : Screen 0
  481.     For I=0 To 160 : For J=0 To 255
  482.      PX=Point(I,J)
  483.      PX=PX-TD
  484.      If PX<0 : PX=0 : End If 
  485.      Plot 319-I,J,PX
  486.      If Mouse Key=2 : MEN=5 : NEWMEN : ZSET : Pop Proc : End If 
  487.     Next J : Next I
  488.     End If 
  489.     MEN=5 : NEWMEN : ZSET : Pop Proc
  490.    End If 
  491.  
  492.    If MZ=19
  493.     A$=" " : B$="PERFORM REFLECTION : ARE YOU SURE?" : OKCANCEL
  494.     If OK=1
  495.     Screen Hide 1 : Screen 0
  496.     For I=0 To 319 : For J=0 To 127
  497.       PX=Point(I,J)
  498.        PX=PX-TD
  499.        If PX<0 : PX=0 : End If 
  500.       Plot I,256-J,PX
  501.      If Mouse Key=2 : MEN=5 : NEWMEN : ZSET : Pop Proc : End If 
  502.     Next J : Next I
  503.     End If : MEN=5 : NEWMEN : ZSET : Pop Proc
  504.     End If 
  505.  
  506.  
  507.    OPT=MZ
  508.  
  509.    End If 
  510.  
  511. End Proc
  512. Procedure GART
  513.  
  514.  If MEN=2
  515.    If OPT=1 : DM=1 : PLT : End If 
  516.    If OPT=2 : DM=2 : PLT : End If 
  517.    If OPT=7 : LINE : End If 
  518.    If OPT=8 : POLY : End If 
  519.    If OPT=3 : DM=1 : SIRCLE : End If 
  520.    If OPT=4 : DM=2 : SIRCLE : End If 
  521.    If OPT=5 : DM=1 : RECTANGLE : End If 
  522.    If OPT=6 : DM=2 : RECTANGLE : End If 
  523.  
  524.    If OPT=13 : PHILL : End If 
  525.    If OPT=14 : ER : End If 
  526.    If OPT=15 : RAYS : End If 
  527.  
  528.    If OPT=16 : DR=3 : PBOB : End If 
  529.    If OPT=17 : DR=2 : PBOB : End If 
  530.    If OPT=18 : DR=1 : PBOB : End If 
  531.    If OPT=22 : DR=4 : PBOB : End If 
  532.    If OPT=9 : DR=2 : BRUSH : End If 
  533.    If OPT=10 : DR=1 : BRUSH : End If 
  534.    If OPT=19 : TRIANGLE : End If 
  535.    If OPT=23 : GRAB : End If 
  536.   End If 
  537.  
  538.    If MEN=3
  539.     If OPT=7 : KLIP : End If 
  540.     If OPT=3 : DR=5 : PBOB : End If 
  541.    End If 
  542.  
  543.    If MEN=5
  544.     If OPT=15 : DR=1 : CLR=1 : BRUSH : End If 
  545.     If OPT=16 : DR=2 : CLR=1 : BRUSH : End If 
  546.     If OPT=17 : DR=3 : CLR=1 : BRUSH : End If 
  547.     If OPT=18 : CLR=1 : RAYS : End If 
  548.    End If 
  549.  
  550. End Proc
  551. Procedure NEWMEN
  552.  
  553. Auto View Off 
  554. Screen Open 1,320,40,16,Lowres
  555. Y=Y Mouse
  556. If Y<71 Then Y=71
  557. If Y>280 Then Y=280
  558. Screen Display 1,132,Y-20,,
  559. Curs Off : Flash Off 
  560. Screen To Front 1
  561. Get Palette 2
  562. Auto View On : View 
  563.  
  564. If MEN=1 or MEN=2 or MEN=3
  565.  Screen Copy 2,0,40*(MEN-1),320,40*MEN To 1,0,0
  566. End If 
  567.  
  568. If MEN>4
  569.  Screen Copy 2,0,40*(MEN-2),320,40*(MEN-1) To 1,0,0
  570. End If 
  571.  
  572. Screen 1
  573.  
  574. End Proc
  575. '------------------ POP UP COLOUR MENUS  
  576. Procedure CMENU
  577.    '
  578.    Screen Open 1,320,75,16,Lowres
  579. Y=Y Mouse
  580. If Y<75 Then Y=75
  581. If Y>250 Then Y=250
  582.    Screen Display 1,132,Y-30,,
  583.    Curs Off : Flash Off 
  584.    Change Mouse 4
  585.    Screen 1
  586. REO:
  587.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  588.    Cls BW
  589.    Reserve Zone 45
  590.    
  591.    Paper BW
  592.    If BW=0 Then Pen 1
  593.    If BW=1 Then Pen 0
  594.    
  595.    NOCOLS=16
  596.    
  597.    For I=0 To NOCOLS-1 : 
  598.       Ink I : Bar I*8,0 To I*8+8,16
  599.       Ink 0 : Box I*8,0 To I*8+8,16
  600.       Set Zone I+1,I*8,0 To I*8+8,16
  601.    Next I
  602.    
  603.    Set Zone 35,0,3*8 To 8,4*8
  604.    Set Zone 36,0,4*8 To 8,5*8
  605.    Set Zone 37,0,5*8 To 8,6*8
  606.    Set Zone 38,16,3*8 To 24,4*8
  607.    Set Zone 39,16,4*8 To 24,5*8
  608.    Set Zone 40,16,5*8 To 24,6*8
  609.    
  610.    Locate 30,3 : Print "[   OK   ]"
  611.    Set Zone 41,30*8,3*8 To(40*8)+(8*10),4*8
  612.    Locate 30,4 : Print "[  MENU  ]"
  613.    Set Zone 42,30*8,4*8 To(40*8)+(8*10),5*8
  614.    Locate 30,5 : Print "[  COL 0 ]"
  615.    Set Zone 43,30*8,5*8 To(40*8)+(8*10),6*8
  616.    Locate 30,6 : Print "[  COL 1 ]"
  617.    Set Zone 44,30*8,6*8 To(40*8)+(8*10),7*8
  618.  
  619.    'SET UP COLOUR BOX 
  620.    
  621.    If BW=0 Then Ink 1
  622.    If BW=1 Then Ink 0
  623.    Box 179,(3*8)-1 To 231,(8*8)+1
  624.    Set Zone 45,180,3*8 To 230,8*8
  625.    
  626.    OK:
  627.    Ink 1 : Box C*8,0 To C*8+8,16
  628.    
  629.    Screen 1 : Fade 1 To 0 : Wait 15
  630.    
  631.    Ink C
  632.    R$=Hex$(Colour(C),3)
  633.    
  634.    A1$=Mid$(R$,2,1) : Gosub GT : R=Val(A1$)
  635.    A1$=Mid$(R$,3,1) : Gosub GT : G=Val(A1$)
  636.    A1$=Mid$(R$,4,1) : Gosub GT : B=Val(A1$)
  637.    Gosub CT
  638.    Do 
  639.       Ink C
  640.       K$=Inkey$
  641.       MZ=Mouse Zone
  642.       
  643.       ST:
  644.       If MZ>0 and MZ<33 and Mouse Key=1 or CHUM=1
  645.          
  646.          CHUM=0
  647.          Ink 0 : Box C*8,0 To C*8+8,16
  648.          Ink MZ : C=MZ-1
  649.          
  650.          Ink 1 : Box C*8,0 To C*8+8,16
  651.          Ink C
  652.          R$=Hex$(Colour(C),3)
  653.          A1$=Mid$(R$,2,1) : Gosub GT : R=Val(A1$)
  654.          A1$=Mid$(R$,3,1) : Gosub GT : G=Val(A1$)
  655.          A1$=Mid$(R$,4,1) : Gosub GT : B=Val(A1$)
  656.          Screen 0 : Colour C,R*256+G*16+B : Wait Vbl : Screen 1
  657.          Gosub CT
  658.          
  659.       End If 
  660.       
  661.       If MZ>34 and MZ<41 and Mouse Key=1
  662.          If MZ=35 : Inc R : End If 
  663.          If MZ=38 : Dec R : End If 
  664.          If MZ=36 : Inc G : End If 
  665.          If MZ=39 : Dec G : End If 
  666.          If MZ=37 : Inc B : End If 
  667.          If MZ=40 : Dec B : End If 
  668.          Gosub CT
  669.          Colour C,R*256+G*16+B
  670.          Screen 0 : Colour C,R*256+G*16+B : Wait Vbl : Screen 1
  671.          Wait 1
  672.       End If 
  673.       
  674.       XV=X Mouse : YV=Y Mouse
  675.       MSC=Mouse Screen
  676.       If MSC=0 Then MST=0 : Screen 0 : Get Palette 1 : Screen 1 : Pop Proc
  677.       
  678.       If Mouse Key=2 Then MST=1 : Screen 0 : Get Palette 1 : Screen 1 : Pop Proc
  679.       
  680.       If MZ=41 and Mouse Key=1 Then Screen 0 : Get Palette 1 : Screen 1 : Pop Proc
  681.       If MZ=42 and Mouse Key=1 Then MST=1 : Screen 0 : Get Palette 1 : Screen 1 : Pop Proc
  682.       If MZ=43 and Mouse Key=1 Then BW=0 : Goto REO
  683.       If MZ=44 and Mouse Key=1 Then BW=1 : Goto REO
  684.  
  685.       Gosub CT
  686.       
  687.    Loop 
  688.    
  689.    GT:
  690.    If A1$="A" Then A1$="10"
  691.    If A1$="B" Then A1$="11"
  692.    If A1$="C" Then A1$="12"
  693.    If A1$="D" Then A1$="13"
  694.    If A1$="E" Then A1$="14"
  695.    If A1$="F" Then A1$="15"
  696.    Return 
  697.    
  698.    CT:
  699.    If R<0 Then R=0
  700.    If R>15 Then R=15
  701.    If G<0 Then G=0
  702.    If G>15 Then G=15
  703.    If B<0 Then B=0
  704.    If B>15 Then B=15
  705.    
  706.    Locate 0,3 : Print "+ - R:";R;" "
  707.    Locate 0,4 : Print "+ - G:";G;" "
  708.    Locate 0,5 : Print "+ - B:";B;" "
  709.    Locate 0,7 : Print "HEX  :";Hex$(Colour(C));"  "
  710.    
  711.    Locate 10,3 : Print "COLOUR:";C;" "
  712.    Ink 1 : Box 99,39 To 131,61
  713.    Ink C : Bar 100,40 To 130,60
  714.    
  715.    Return 
  716.    
  717. End Proc
  718. '------------------ REQUESTOR ROUTINES 
  719. Procedure OKCANCEL
  720.  
  721. Z=$FFF
  722. Fade 1,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z
  723. Wait 15
  724.  
  725. Cls 1 : Reset Zone 
  726.  
  727. Paper 1
  728. Pen 0
  729.  
  730. Locate 0,0 : Centre A$
  731. Locate 0,1 : Centre B$
  732.  
  733. Paste Bob 130,20,5 : Paste Bob 162,20,6
  734. Set Zone 1,130,20 To 162,20+16
  735. Set Zone 2,162,20 To 162+32,20+16
  736. Fade 1 To 2 : Wait Vbl 
  737.  
  738. Repeat 
  739.  MZ=Mouse Zone
  740. Until Mouse Key=1 and MZ>0
  741.  
  742. If MZ=1 Then OK=1 : NO=0
  743. If MZ=2 Then NO=1 : OK=0
  744.  
  745. Fade 1 : Wait 15 : NEWMEN : ZSET
  746.  
  747. End Proc
  748. Procedure BRUSHES
  749.  
  750. Z=$FFF : Fade 1,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z : Wait 15
  751. Cls 1 : Reset Zone : Paper 1 : Pen 0
  752. Locate 0,1 : Print " BRUSH SCALE"
  753. Paste Bob 230,20,5
  754. Set Zone 1,230,20 To 262,20+16
  755. Paste Bob 8,20,7 : Paste Bob 8+32,20,8
  756. Set Zone 3,8,20 To 8+32,20+16
  757. Set Zone 4,8+32,20 To 8+64,20+16
  758. Fade 1 To 2 : Wait Vbl 
  759.  
  760. RDRAW:
  761. Ink 0
  762. If DR=2 Then Circle 150,20,BR2
  763. If DR=1 Then Box 150-BR1,20-BR1 To 150+BR1,20+BR1
  764. If DR=3 Then Bar 150-BR1,20-BR1 To 150+BR1,20+BR1
  765.  
  766. Repeat 
  767.  MZ=Mouse Zone
  768.  If DR=1 or DR=3 Then Locate 23,3 : Print BR1;" "
  769.  If DR=2 Then Locate 23,3 : Print BR2;" "
  770. Until Mouse Key=1 and MZ>0
  771.  
  772. If MZ=1 Then Fade 1 : Wait 15 : NEWMEN : ZSET : Ink C : Pop Proc
  773.  
  774. Ink 1
  775.  
  776. If DR=2 Then Circle 150,20,BR2
  777. If DR=1 Then Box 150-BR1,20-BR1 To 150+BR1,20+BR1
  778. If DR=3 Then Bar 150-BR1,20-BR1 To 150+BR1,20+BR1
  779.  
  780. If MZ=3 and DR=1 or MZ=3 and DR=3 Then Inc BR1
  781. If MZ=3 and DR=2 Then Inc BR2
  782. If MZ=4 and DR=1 or MZ=4 and DR=3 Then Dec BR1
  783. If MZ=4 and DR=2 Then Dec BR2
  784.  
  785. If BR1>18 Then BR1=18
  786. If BR1<1 Then BR1=1
  787. If BR2>18 Then BR2=18
  788. If BR2<1 Then BR2=1
  789.  
  790. Wait 1
  791.  
  792. Goto RDRAW
  793.  
  794. End Proc
  795. Procedure CULPIC
  796.  
  797. PIC=0
  798.  
  799. Z=$FFF : Fade 1,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z : Wait 15
  800.  
  801. ROFF:
  802. Cls 1 : Reset Zone 
  803. Paper 1 : Pen 0
  804. Locate 0,1 : Centre "COLOUR SELECT:"
  805.  
  806.    For I=1 To NOCOLS-1
  807.       Ink I-1 : Bar I*8,16 To I*8+8,32
  808.       Ink 0 : Box I*8,16 To I*8+8,32
  809.       Set Zone I,I*8,16 To I*8+8,32
  810.    Next I
  811.  
  812. Paste Bob 270,4,5 : Paste Bob 270,4+16,6
  813. Set Zone 35,270,4 To 270+32,4+16
  814. Set Zone 36,270,4 To 270+32,4+32
  815. Fade 1 To 0 : Wait Vbl 
  816.  
  817. BOV:
  818. Repeat 
  819.  MZ=Mouse Zone
  820. Until Mouse Key=1
  821.  
  822.  MS=Mouse Screen
  823.  
  824.  If MS=0 and Mouse Key=1
  825.   Screen 0 : 
  826.   X=X Screen(X Mouse)
  827.   Y=Y Screen(Y Mouse)
  828.   P=Point(X,Y)
  829.   If P=-1 : P=0 : End If 
  830.   Screen 1 : MZ=P+1
  831.  End If 
  832.  
  833. If MZ>0 and MZ<35
  834.          PIC=1
  835.          Ink 0 : Box(C*8)+8,16 To(C*8)+16,32
  836.          Ink MZ : C=MZ-1
  837.          Ink 1 : Box(C*8)+8,16 To(C*8)+16,32
  838.          Ink C
  839.          Goto BOV
  840. End If 
  841.  
  842. If MZ=35 and PIC=1 Then OK=1 : NO=0
  843.  
  844. If MZ=35 and PIC=0 Then Boom : Cls 1 : Locate 0,2 : Centre "YOU MUST PICK A COLOUR FIRST!!" : Repeat : Until Mouse Key=0 : Repeat : Until Mouse Key=1 : Goto ROFF
  845.  
  846. If MZ=36 Then NO=1 : OK=0
  847. If MZ=0 Then Goto BOV
  848.  
  849. Fade 1 : Wait 15 : NEWMEN : ZSET
  850.  
  851. End Proc
  852. Procedure NUMBERS
  853.  
  854. Z=$FFF : Fade 1,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z : Wait 15
  855. Cls 1 : Reset Zone : Paper 1 : Pen 0 : Locate 0,1 : Print A$
  856. Paste Bob 230,20,5 : Set Zone 1,230,20 To 262,20+16
  857. Paste Bob 8,20,7 : Paste Bob 8+32,20,8
  858. Set Zone 3,8,20 To 8+32,20+16 : Set Zone 4,8+32,20 To 8+64,20+16
  859. Fade 1 To 2 : Wait Vbl 
  860.  
  861. GS:
  862.  
  863. Repeat 
  864.  MZ=Mouse Zone
  865.  Locate 14,3 : Print B$;TEMP;" "
  866. Until Mouse Key=1 and MZ>0
  867.  
  868. If MZ=1 Then Fade 1 : Wait 15 : NEWMEN : ZSET : Ink C : Pop Proc
  869. If MZ=3 Then Inc TEMP
  870. If MZ=4 Then Dec TEMP
  871.  
  872. If TEMP<0 Then TEMP=0
  873. If TEMP>LIMIT Then TEMP=LIMIT
  874.  
  875. Wait 3
  876. Goto GS
  877.  
  878. End Proc
  879. '------------------- TOOLS MENU
  880. Procedure KLIP
  881.    Gr Writing 2
  882.    POSITION
  883.    Clip 
  884.    While Mouse Key
  885.    X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
  886.    Box X,Y To X2,Y2 : Box X,Y To X2,Y2
  887.    Wend 
  888.    If X2=X or Y2=Y : Pop Proc : End If 
  889.     If X2<X : Swap X2,X : End If 
  890.     If Y2<Y : Swap Y2,Y : End If 
  891.    Gr Writing GW
  892.    Clip X,Y To X2,Y2
  893. End Proc
  894. Procedure SLIDE
  895.  
  896. Screen 0
  897. If DR=1 Then Def Scroll 1,0,0 To 320,256,0,-1
  898. If DR=2 Then Def Scroll 1,0,0 To 320,256,-1,0
  899.  
  900. If DR=1
  901.  Scroll 1 : Wait Vbl : Screen Copy 0,0,0,320,1 To 0,0,255
  902.  Pop Proc
  903. End If 
  904.  
  905. If DR=2
  906.  Scroll 1 : Wait Vbl : Screen Copy 0,0,0,1,256 To 0,319,0
  907.  Pop Proc
  908. End If 
  909.  
  910. End Proc
  911. Procedure LINESTYLE
  912.  
  913. Z=$FFF : Fade 1,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z : Wait 15
  914. ROFF:
  915. Cls 1 : Reset Zone : Paper 1 : Pen 0
  916. Locate 0,1 : Centre "LINE STYLE EDITOR"
  917.  
  918. Paste Bob 270,4,5 : Set Zone 35,270,4 To 270+32,4+16
  919. Fade 1 To 2 : Wait Vbl 
  920.  
  921. BEL:
  922.  
  923.    For I=2 To 16
  924.       A$=Bin$(SL)
  925.       V$=Mid$(A$,I+1,1)
  926.       If V$="0" Then Ink 7 : Bar I*8,16 To I*8+8,32
  927.       If V$="1" Then Ink 0 : Bar I*8,16 To I*8+8,32
  928.       Set Line %1111111111111111
  929.       Ink 0 : Box I*8,16 To I*8+8,32
  930.       Set Zone I,I*8,16 To I*8+8,32
  931.    Next I
  932.  
  933. Set Line %1111111111111111
  934. Ink 1 : Draw 150,25 To 240,25
  935.  
  936. Set Line SL
  937. Ink 3 : Draw 150,25 To 240,25
  938.  
  939. BOV:
  940.  
  941. Repeat 
  942.  MZ=Mouse Zone
  943. Until Mouse Key=1 and MZ>0
  944.  
  945. If MZ>1 and MZ<17
  946.  Bchg 16-MZ,SL
  947.  Goto BEL
  948. End If 
  949.  
  950. If MZ=35 Then Fade 1 : Wait 15 : NEWMEN : ZSET : Ink C : Pop Proc
  951.  
  952. End Proc
  953. Procedure XY
  954.  
  955. Z=$FFF
  956. Fade 1,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z
  957. Wait 15 : Cls 1 : Reset Zone 
  958. Paper 1 : Pen 0
  959. Locate 0,1 : Print " X / Y SCREEN CO'ORDINATES :"
  960. Paste Bob 270,4,5 : Set Zone 1,270,4 To 270+32,4+16
  961. Fade 1 To 2 : Wait Vbl 
  962.  
  963. RDRAW:
  964.  
  965. Ink 0
  966. Repeat 
  967.  Screen 0
  968.  MZ=Mouse Zone
  969.  MS=Mouse Screen
  970.  X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  971.  F=Point(X,Y)
  972.  If MS=0 Then Screen 1 : Locate 4,3 : Print "X:";X;" Y:";Y;" COLOUR:";F;"    "
  973.  If MS=1 Then Screen 1 : Locate 4,3 : Print "MOVE POINTER ONTO SCREEN."
  974. Until Mouse Key=1
  975. Screen 1
  976. MZ=Mouse Zone
  977. If MZ=1 Then Fade 1 : Wait 15 : NEWMEN : ZSET : Ink C : Pop Proc
  978. Goto RDRAW
  979.  
  980. End Proc
  981. Procedure BRUSHED
  982.  
  983. Reserve Zone 40
  984. Z=$FFF : Fade 1,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z : Wait 15
  985. Cls 1 : Reset Zone : Paper 1 : Pen 0
  986. Locate 0,1 : Print " BRUSH"
  987. Locate 0,2 : Print " GRABBER"
  988.  
  989. Paste Bob 230,20,5
  990. Set Zone 20,230,20 To 262,20+16
  991.  
  992. For I=3 To 5 : Ink 0
  993.  Box I*32,3 To(I*32)+32,35
  994.  Set Zone I-2,I*32,3 To(I*32)+32,35
  995. Next I
  996.  
  997. Fade 1 To 2 : Wait Vbl 
  998.  
  999. RDRAW:
  1000. Show On 
  1001.  
  1002. For I=3 To 5
  1003.   Ink 1 : Box(I*32),3-2 To(I*32)+32,35+2
  1004.     No Mask 6+I
  1005.     Paste Bob I*32,3,6+I
  1006.    If I-2=CURBRUSH
  1007.   Ink 0 : Box(I*32),3-2 To(I*32)+32,35+2
  1008.  End If 
  1009. Next I
  1010.  
  1011. Repeat 
  1012.  MZ=Mouse Zone
  1013.  MS=Mouse Screen
  1014.  If MS=1 and Mouse Key=2 Then Get Palette 0 : Repeat : Until Mouse Key=0 : Get Palette 2
  1015.  If MS=0 : PIC=1
  1016.   Screen 0 : Wait Vbl 
  1017.   Wait Vbl : Gr Writing 2 : Wait Vbl 
  1018.   Set Line %1111111111111111
  1019.   Repeat 
  1020.     X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  1021.     MS=Mouse Screen
  1022.     If PIC=1 : PIC=0
  1023.      FU=Point(X,Y)
  1024.       If FU=-1 : FU=0 : End If 
  1025.      Plot X,Y,FU
  1026.     End If 
  1027.     Box X,Y To X+32,Y+32
  1028.     Box X,Y To X+32,Y+32
  1029.   Until Mouse Key=1 or MS=1
  1030.   If X>319-32 : X=319-32 : End If 
  1031.   If Y>256-32 : Y=256-32 : End If 
  1032.   If X<0 : X=0 : End If 
  1033.   If Y<0 : Y=0 : End If 
  1034.   Gr Writing 1
  1035.   If MS=1 : Screen 1 : Goto RDRAW : End If 
  1036.   If Mouse Key=1 : Get Bob CURBRUSH+8,X,Y To X+32,Y+32 : Screen 1 : Goto RDRAW : End If 
  1037.   End If 
  1038. Until Mouse Key and MZ>0
  1039.  
  1040. If MZ>0 and MZ<4 and Mouse Key=1 Then CURBRUSH=MZ
  1041. If MZ=20 Then Fade 1 : Wait 15 : NEWMEN : ZSET : Ink C : Pop Proc
  1042. Goto RDRAW
  1043.  
  1044. End Proc
  1045. '------------------- SHADE MENU  
  1046. Procedure SHFT
  1047.  
  1048. Z=$FFF : Fade 1,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z : Wait 15
  1049. Cls 1 : Reset Zone : Paper 1 : Pen 0
  1050.  
  1051. Locate 0,1 : Print " COLOUR ROTATION"
  1052.  
  1053. Paste Bob 280,20,5 : Set Zone 1,270,20 To 280+32,20+16
  1054. Paste Bob 8,20,12 : Paste Bob 8+32,20,12 : Paste Bob 8+64,20,12
  1055. Set Zone 3,8,20 To 8+32,20+16 : Set Zone 4,8+32,20 To 8+64,20+16
  1056. Set Zone 5,8+64,20 To 8+96,20+16
  1057. Fade 1 To 2 : Wait Vbl 
  1058. STR=1
  1059. RDRAW:
  1060.  
  1061. Wait 3
  1062. If SP>99 Then SP=99 : STR=1
  1063. If SP<0 Then SP=0 : STR=1
  1064. If STA<0 Then STA=0
  1065. If STA>FIN-1 Then STA=FIN-1
  1066. If FIN<STA+2 Then FIN=STA+2
  1067. If FIN>NOCOLS-1 Then FIN=NOCOLS-1
  1068. If MZ<>3 Then STR=1
  1069. Locate 20,1 : Print "SPEED:";SP;" "
  1070. Locate 20,2 : Print "START:";STA;" "
  1071. Locate 20,3 : Print "FINISH:";FIN;" "
  1072.  
  1073. If STR=1 Then STR=0 : Goto CHUMMER
  1074. Screen 0 : Shift Up SP,STA,FIN,1 : Wait Vbl : Screen 1
  1075.  
  1076. CHUMMER:
  1077. Repeat 
  1078.  MZ=Mouse Zone
  1079. Until Mouse Key and MZ>0
  1080.  
  1081. If MZ=3 and Mouse Key=1 Then Inc SP
  1082. If MZ=3 and Mouse Key=2 Then Dec SP
  1083. If MZ=4 and Mouse Key=1 Then Inc STA
  1084. If MZ=4 and Mouse Key=2 Then Dec STA
  1085. If MZ=5 and Mouse Key=1 Then Inc FIN
  1086. If MZ=5 and Mouse Key=2 Then Dec FIN
  1087.  
  1088. If MZ=1 Then Screen 1 : Fade 1 : Wait 15 : NEWMEN : ZSET : Ink C : Pop Proc
  1089.  
  1090. Goto RDRAW
  1091.  
  1092. End Proc
  1093. Procedure RFILL
  1094.  
  1095. Screen Hide 1
  1096. Screen 0
  1097. CURC=STA-1 : U=1
  1098. For I=0 To 255
  1099.   If DR=1 Then Inc CURC
  1100.   If DR=2 and U=1 Then Inc CURC
  1101.   If DR=2 and U=0 Then Dec CURC
  1102.   For J=0 To 319
  1103.    If Mouse Key=2 Then NEWMEN : ZSET : Ink C : Pop Proc
  1104.    VX=Point(J,I)
  1105.    If VX=C Then Plot J,I,CURC
  1106.  Next J
  1107.   If CURC=FIN-1 and DR=1 Then CURC=STA-1
  1108.   If CURC=FIN-1 and U=1 Then U=0
  1109.   If CURC=STA and U=0 Then U=1
  1110. Next I
  1111.  
  1112. NEWMEN : ZSET : Ink C : Pop Proc
  1113.  
  1114. End Proc
  1115. Procedure SHADER
  1116.  
  1117. Z=$FFF : Fade 1,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z : Wait 15
  1118. Cls 1 : Reset Zone : Paper 1 : Pen 0
  1119. Locate 0,1 : Print " COLOUR SHADES SELECTOR"
  1120. Paste Bob 230,20,5
  1121. Set Zone 1,230,20 To 262,20+16
  1122. Paste Bob 8,20,7 : Paste Bob 8+32,20,8
  1123. Set Zone 3,8,20 To 8+32,20+16 : Set Zone 4,8+32,20 To 8+64,20+16
  1124. Fade 1 To 2 : Wait Vbl 
  1125.  
  1126. RUMP:
  1127. Screen 1
  1128.  
  1129. Repeat 
  1130.  MZ=Mouse Zone
  1131.  Locate 15,3 : Print "PALETTE:";PAL;" "
  1132. Until Mouse Key=1 and MZ>0
  1133.  
  1134. If MZ=1 Then Fade 1 : Wait 15 : NEWMEN : ZSET : Ink C : Pop Proc
  1135. If MZ=3 Then Inc PAL
  1136. If MZ=4 Then Dec PAL
  1137. If PAL<1 Then PAL=1
  1138. If PAL>15 Then PAL=15
  1139.  
  1140. Screen 0
  1141. If PAL=1 Then For I=0 To NOCOLS-1 : Colour I,PAL(I) : Next I : Goto RUMP
  1142. For I=0 To NOCOLS-1
  1143.  Restore PAL : Read A
  1144.  Colour I,A
  1145. Next I
  1146. Goto RUMP
  1147.  
  1148. PAL:
  1149. 2 Data $0
  1150. 3 Data $0
  1151. 4 Data $0
  1152.  
  1153. End Proc